<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box{width:400px;height:300px;border: solid 1px black;margin: 0 auto;}
        .box ul{margin: 0;padding:0;list-style: none;display: flex;background: #eee;height: 30px;line-height:30px;}
        .box ul li{flex: 1;border-left:solid 1px #fff;border-right:solid 1px #fff;text-align: center;cursor: pointer;}
        .box ul li.active{background: red;color: #fff;}

        .box .cont>div{height: 270px;display: none;}
        .phone{background: #399;}
        .computer{background: #393;}
        .bike{background: #939;}
    </style>
</head>
<body>
    <div class="box">
        <ul><li>手机</li><li>电脑</li><li>自行车</li></ul>
        <div class="cont">
            <div class="phone">这是手机</div>
            <div class="computer">这是电脑</div>
            <div class="bike">这是自行车</div>
        </div>
    </div>
</body>
<script>
    var ali = document.querySelectorAll(".box ul li");
    var acont = document.querySelectorAll(".cont>div");

    // 1. 设置默认值
    var index = 0;

    // 2. 根据默认值设置默认布局
    ali[index].className = "active";
    acont[index].style.display = "block";

    // 3. 绑定事件
    for(var i=0;i<ali.length;i++){

        // 5. 在还能拿到每个计数器时，给每个li绑定索引信息
        // js自定义属性
        ali[i].index = i;
        // html自定义属性
        // ali[i].setAttribute("index", i);

        ali[i].onclick = function(){
            // 4. 通过this获取当前元素
            // console.log(this);
            
            // 6. 取消上次索引对应的样式
            ali[index].className = "";
            acont[index].style.display = "none"
            // 问题：循环内的事件内无法获取循环每次的计数器
            // 原因：循环多次执行时，只是在绑定事件，并没有触发事件；等到事件触发时，循环已经结束了，计数器的值已经被多次改变了，所以无法拿到每次的计数器
            // console.log(i);
            // 解决：不使用循环的计数器获取每个元素的索引

            // 通过当前元素获取索引
            // html自定义属性
            // console.log(this.getAttribute("index"));
            // js自定义属性
            // console.log(this.index);

            // 7. 给当前点击的元素及其索引对应内容添加样式
            this.className = "active"
            acont[this.index].style.display = "block";


            // 8. 将点击的元素的索引，设置给默认索引
            // 将本次点击的索引，作为下次要取消的索引
            // 今天是明天的昨天
            index = this.index;
        }
    }


    // 异步
</script>
</html>